home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / dev / gui / gui4cli.lha / Gui4Cli / Ext / GCView / gcScala.gc next >
Text File  |  1999-04-21  |  7KB  |  303 lines

  1. G4C
  2.  
  3. ; Show a Scala event (without sounds, wipes etc)
  4. ; -----------------------------------------------------------
  5. ; USE: GuiLoad Path:gcScala.gc GUI ID EventLine
  6.  
  7. ; - GUI          : The name of the gui containing the listview
  8. ; - ID          : The ID of the listview holding the script
  9. ; - EventLine : The line number where the event starts
  10. ; -----------------------------------------------------------
  11.  
  12. xOnLoad gui id evline
  13.     ; Start up gcview - if it's already running, clear it
  14.     ; and do not set the RMB notify
  15.     ifexists port ~gcview
  16.         run 'guis:ext/gcview/gcview'
  17.         wait port gcview 100
  18.         if $$retcode > 0
  19.             ezreq 'Could not start GCView' Abort ''
  20.             guiquit #this
  21.             stop
  22.         endif
  23.         call gcview notify RMB 'Gui4Cli' 'gosub gcScala.gc quit'
  24.         IStartedGCV = 1        ; flag to quit it at end
  25.     else
  26.         call gcview unload #PIC
  27.         call gcview unload #ANIM
  28.         IStartedGCV = 0
  29.     endif
  30.  
  31.     gosub #this playevent
  32.  
  33. xOnReload gui id evline
  34.     call gcview unload #PIC
  35.     call gcview unload #ANIM
  36.     gosub #this playevent
  37.  
  38. xRoutine quit                    ; this is the routine gcview will call on RMB
  39.     if $IStartedGCV = 1        ; quit gcview if we were the ones that started it
  40.         call gcview quit force
  41.     endif
  42.     guiquit #this
  43.  
  44. ; ---------------------------------------------------------
  45. ;    PlayEvent    - Main routine to load & play event
  46. ; ---------------------------------------------------------
  47.  
  48. xRoutine PlayEvent
  49.  
  50.     Remap      = OFF                ; default attribute settings
  51.     APen      = 2
  52.     BPen      = 1
  53.     PenMode = JAM1
  54.     call gcview unload mypic    ; in case it was loaded
  55.  
  56.     gosub #this ClipEvent    ; store event into our lv
  57.     lvuse #this 1
  58.  
  59.     gosub #this LoadPic        ; load BLANK, PICTURE or ANIM
  60.  
  61.     ; go through lv loading brush, font, text etc
  62.     lvgo first
  63.     while $$lv.line > ''
  64.         docase $$lv.rec[0][4]
  65.  
  66.         case = BRUS                ; BRUSH
  67.             gosub #this LoadBrush $$lv.rec
  68.             break
  69.  
  70.         case = FONT
  71.             gosub #this SetFont $$lv.rec
  72.             break
  73.  
  74.         case = PALE                ; PALETTE
  75.             call gcview set SCpalette mypic $$lv.rec[8]
  76.             break
  77.  
  78.         case = COLO                ; COLOR
  79.             gosub #this SetColor $$lv.rec
  80.             break
  81.  
  82.         case = TEXT
  83.             if $$lv.rec[4][1] = ' '     ; avoid textwipe, textout etc
  84.                 gosub #this ShowText $$lv.rec
  85.             endif
  86.             break
  87.  
  88.         case = ATTR                ; ATTRIBUTES (check for Remap/outline)
  89.             curline = $$lv.rec
  90.             searchvar curline "edge" ci first
  91.             if $$search.pos != ''
  92.                 PenMode = OUTLINE
  93.             else
  94.                 PenMode = JAM1
  95.             endif
  96.             searchvar curline "remap" ci first
  97.             if $$search.pos != ''
  98.                 Remap = ON
  99.             else
  100.                 Remap = OFF
  101.             endif
  102.             break
  103.         endcase
  104.  
  105.         if $$lv.rec[0][3] == BOX        ; BOX - has only 3 letters..
  106.             gosub #this DoBox $$lv.rec
  107.         endif
  108.  
  109.         lvgo next
  110.     endwhile
  111.  
  112.     ; bring finished screen to front
  113.     call gcview open mypic
  114.     
  115. ; ---------------------------------------------------------
  116. ;    LoadPic    - Load pic/anim, resize & open - Alias = mypic
  117. ;    Screen will be opened *behind* (so we can add to it)
  118. ; ---------------------------------------------------------
  119.  
  120. xRoutine LoadPic
  121.     local stopflag
  122.     stopflag = 0
  123.  
  124.     ; go through lv, find main item - BLANK, PICTURE or ANIM
  125.     lvuse #this 1
  126.     lvgo first
  127.  
  128.     while $$lv.line > ''
  129.     and stopflag != 2                ; extra loop for resolution
  130.  
  131.         docase $$lv.rec[0][4]
  132.  
  133.         case = BLAN                    ; BLANK 640 512 4 lace hires 0
  134.             curline = $$lv.rec    ; - use only the width/height/depth
  135.             parsevar curline
  136.             call gcview create mypic $$parse.1 $$parse.2 $$parse.3
  137.             stopflag = 2
  138.             break
  139.  
  140.         case = ANIM                    ; ANIM
  141.             curline = $$lv.rec
  142.             parsevar curline
  143.  
  144.             ifexists gui gcview.gc                ; use gcview settings if found
  145.                 gcview.gc/file = $$parse.1
  146.                 gcview.gc/type = ANIM
  147.                 if $gcview.gc/loadall == ON
  148.                     gcview.gc/loadedas = LOADALL
  149.                     if $gcview.gc/userange = 1
  150.                         call gcview anload $$parse.1 mypic $gcview.gc/start $gcview.gc/frames $gcview.gc/andir
  151.                     else
  152.                         call gcview anload $$parse.1 mypic 0 1000 $gcview.gc/andir
  153.                     endif
  154.                 else
  155.                     gcview.gc/loadedas = NORMAL
  156.                     call gcview load $$parse.1 mypic
  157.                 endif
  158.                 gosub gcview.gc showinfo
  159.  
  160.             else
  161.                 call gcview anload $$parse.1 mypic 0 -1 FORWARD ; load anim
  162.             endif
  163.  
  164.             call gcview set speed mypic $$parse.2            ; anim speed
  165.             ; call gcview set loops mypic $$parse.3            ; loops (-1=forever)
  166.             stopflag = 2
  167.             break
  168.  
  169.         case = PICT                    ; PICTURE
  170.             curline = $$lv.rec
  171.             parsevar curline
  172.             call gcview load $$parse.1 mypic
  173.             stopflag = 1 ; continue, looking for resolution
  174.             break
  175.  
  176.         case = RESO                    ; RESOLUTION (only in pictures)
  177.             curline = $$lv.rec
  178.             parsevar curline
  179.             call gcview set mode mypic 'x$$parse.4' ; viewmode is in hex
  180.             call gcview resize mypic $$parse.1 $$parse.2
  181.             stopflag = 2
  182.             break
  183.  
  184.         endcase
  185.         lvgo next
  186.     endwhile
  187.  
  188.     if $stopflag = 0        ; nothing found..
  189.         ezreq 'Could not find BLANK, PICTURE or ANIM!' Abort ''
  190.         stop
  191.     endif
  192.  
  193. ; ---------------------------------------------------------
  194. ;    LoadBrush    - Load, resize/Remap, paste & free Brush
  195. ; ---------------------------------------------------------
  196.  
  197. xRoutine LoadBrush curline
  198.  
  199.     ; BRUSH 128 134 "SQ0:name" size 163 350
  200.     parsevar curline
  201.     call gcview load $$parse.3 mybrush
  202.  
  203.     ; resize if needed
  204.     if $$parse.4 == 'size'
  205.         call gcview resize mybrush $$parse.5 $$parse.6
  206.     endif
  207.  
  208.     ; paste brush
  209.     if $Remap = ON
  210.         call gcview paste mybrush mypic $$parse.1 $$parse.2 Remap
  211.     else
  212.         call gcview paste mybrush mypic $$parse.1 $$parse.2
  213.     endif
  214.     
  215.     call gcview unload mybrush ; no longer needed
  216.  
  217. ; ---------------------------------------------------------
  218. ;    SetFont        - Set the current font to use
  219. ; ---------------------------------------------------------
  220.  
  221. xRoutine SetFont curline
  222.     local fsize
  223.  
  224.     ; FONT Scala.font 20 11 ->> 20=??, 11=size (always last)
  225.     parsevar curline
  226.     if $$parse.tot = 4
  227.         fsize = $$parse.3
  228.     else
  229.         fsize = $$parse.2
  230.     endif
  231.  
  232.     call gcview set font $$parse.1 $fsize 000
  233.  
  234. ; ---------------------------------------------------------
  235. ;    SetColor        - 1st num = text color, 2nd=outline color
  236. ; ---------------------------------------------------------
  237.  
  238. xRoutine SetColor curline
  239.  
  240.     ; COLOR 13 1 2 13 2 0 1 0 0 1 1 2 2 1 1
  241.     parsevar curline
  242.     APen = $$parse.1
  243.     BPen = $$parse.2
  244.  
  245. ; ---------------------------------------------------------
  246. ;    ShowText        - TEXT 285 224 "text"
  247. ; ---------------------------------------------------------
  248.  
  249. xRoutine ShowText curline
  250.  
  251.     call gcview set pens $APen $BPen $PenMode     ; set the pens
  252.  
  253.     parsevar curline
  254.     call gcview text mypic $$parse.1 $$parse.2 $$parse.3
  255.  
  256. ; ---------------------------------------------------------
  257. ;    DoBox            - BOX l t w h
  258. ; ---------------------------------------------------------
  259.  
  260. xRoutine DoBox curline
  261.  
  262.     call gcview set pens $APen $BPen $PenMode     ; set the pens
  263.  
  264.     parsevar curline
  265.     call gcview rect mypic $$parse.1 $$parse.2 $$parse.3 $$parse.4
  266.  
  267. ; ---------------------------------------------------------
  268. ;    ClipEvent - put event into our lv so we handle it easier
  269. ; ---------------------------------------------------------
  270.  
  271. xRoutine ClipEvent
  272.  
  273.     lvuse $gui $id
  274.     lvgo    #$evline
  275.     if $$lv.rec[0][5] != 'EVENT'
  276.         ezreq 'Could not find event\nat line $evline' Abort ''
  277.         stop
  278.     endif
  279.  
  280.     ; count No of lines till end of event
  281.     count = 0
  282.     while $$lv.line > ''
  283.     and $$lv.rec[0][3] != END
  284.         lvgo next
  285.         ++count
  286.     endwhile
  287.     
  288.     ; clip the lines into our own lv
  289.     lvgo #$evline
  290.     lvclip copy $count paste #this 1
  291.  
  292. ; ---------------------------------------------------------
  293. ;    temp lv to hold the event
  294. ; ---------------------------------------------------------
  295.  
  296. xListview 0 0 0 0 '' var '' 0 NUM
  297. gadid 1
  298.  
  299.  
  300.  
  301.  
  302.  
  303.